<!DOCTYPE html>
<html>

<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<meta name="theme-color" content="#33474d">
	<title>Python 准备-ipython | 失落的乐章</title>
	<link rel="stylesheet" href="/css/style.css" />
	
      <link rel="alternate" href="/atom.xml" title="失落的乐章" type="application/atom+xml">
    
</head>

<body>

	<header class="header">
		<nav class="header__nav">
			
				<a href="/archives" class="header__link">Archive</a>
			
				<a href="/tags" class="header__link">Tags</a>
			
				<a href="/atom.xml" class="header__link">RSS</a>
			
		</nav>
		<h1 class="header__title"><a href="/">失落的乐章</a></h1>
		<h2 class="header__subtitle">技术面前，永远都是学生。</h2>
	</header>

	<main>
		<article>
	
		<h1>Python 准备-ipython</h1>
	
	<div class="article__infos">
		<span class="article__date">2017-10-12</span><br />
		
		
			<span class="article__tags">
			  	<a class="article__tag-link" href="/tags/Python/">Python</a>
			</span>
		
	</div>

	

	
		<h1 id="Python-准备-ipython"><a href="#Python-准备-ipython" class="headerlink" title="Python 准备-ipython"></a>Python 准备-ipython</h1><h2 id="update"><a href="#update" class="headerlink" title="update"></a>update</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;发现ipython notebook 灰常方便，主要是写一些代码片段的时候，debug起来甚至跟pycharm有的一拼。配置好服务器版本后，打开浏览器就能用，一定程度上提升了效率。具体如何配置ipython notebook的service可以看官网，值得注意的一点是，如果不配置直接本地运行的化，只能通过localhost:[port]打开，无法远程访问。</p>
<h2 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h2><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;安装是没什么好说的，<code>yum install -y python-pip</code> 然后 <code>pip install ipython</code> 就完了，但是，很多时候我们要在不同的python版本间切换。比如自己习惯在python3版本下工作，但是很多时候学习一些书中的例子 时使用的是python2的版本。因此这里建议同时安装ipython和ipython3两个版本。从我自己使用的情况来看，同时安装两个版本的 ipython并没有冲突，两个版本间的安装包是相互独立的，只是两个版本的ipython会共享配置文件。需要使用python2的环境时就在终端执行 ipython，需要使用python3版本的时候就在终端执行ipython3。</p>
<figure class="highlight"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div></pre></td><td class="code"><pre><div class="line">tianjun@tianjun-ASUS:~/.config/ipython$ ipython</div><div class="line">Python <span class="number">2.7</span><span class="number">.5</span>+ (default, Sep <span class="number">19</span> <span class="number">2013</span>, <span class="number">13</span>:<span class="number">48</span>:<span class="number">49</span>) </div><div class="line">Type <span class="string">"copyright"</span>, <span class="string">"credits"</span> <span class="keyword">or</span> <span class="string">"license"</span> <span class="keyword">for</span> more information.</div><div class="line">IPython <span class="number">1.1</span><span class="number">.0</span> -- An enhanced Interactive Python.</div><div class="line">? -&gt; Introduction and overview of IPython's features.</div><div class="line">%quickref -&gt; Quick reference.</div><div class="line">help -&gt; Python's own help system.</div><div class="line">object? -&gt; Details about 'object', use 'object??' for extra details.</div><div class="line"> In [<span class="number">1</span>]: exit</div><div class="line">tianjun@tianjun-ASUS:~/.config/ipython$ ipython3</div><div class="line">Python <span class="number">3.3</span><span class="number">.2</span>+ (default, Oct <span class="number">9</span> <span class="number">2013</span>, <span class="number">14</span>:<span class="number">50</span>:<span class="number">09</span>) </div><div class="line">Type <span class="string">"copyright"</span>, <span class="string">"credits"</span> <span class="keyword">or</span> <span class="string">"license"</span> <span class="keyword">for</span> more information.</div><div class="line"> IPython <span class="number">1.1</span><span class="number">.0</span> -- An enhanced Interactive Python.</div><div class="line">? -&gt; Introduction and overview of IPython's features.</div><div class="line">%quickref -&gt; Quick reference.</div><div class="line">help -&gt; Python's own help system.</div><div class="line">object? -&gt; Details about 'object', use 'object??' for extra details.</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;那么怎么安装不同版本的ipython呢？<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;谈到不同版本python的共存，一个不可避免的问题就是给不同的python版本安装对应的软件包。一个比较好的解决办法是先安装 virtualenv这个工具，然后生成一个独立的工作目录，在该目录下安装不同版本的工具包。但是我嫌这个每次都要切换到工作目录下，还要执行 activate，比较麻烦。所以建议分别安装pip和pip3工具。</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">yum install -y pip pip3</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;然后想安装python2版本的软件包就用命令</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">pip install ipython</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;想安装python3版本对应的软件包就用命令</p>
<figure class="highlight bash"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line">pip3 install ipython3</div></pre></td></tr></table></figure>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;类似的，我们可以安装好不同python版本对应的numpy，scipy,matplotlib,sklearn等等。</p>
<h2 id="常用功能"><a href="#常用功能" class="headerlink" title="常用功能"></a>常用功能</h2><h3 id="1-自动补全"><a href="#1-自动补全" class="headerlink" title="1. 自动补全"></a>1. 自动补全</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipython最方便的第一个功能是tab自动补全。我常用来查看某个类的方法，或者是某个包中提供的函数。这个很是有用，有时候忘了某个函数是怎么写的时候，用自动补全查看下。例如：</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/python%E5%87%86%E5%A4%87-ipython/01.png?raw=true" alt="iamges"><figcaption class="figure__caption">iamges</figcaption></figure></p>
<h3 id="2-查看帮助文档和源码"><a href="#2-查看帮助文档和源码" class="headerlink" title="2. 查看帮助文档和源码"></a>2. 查看帮助文档和源码</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;比如，我想查看os.walk这个函数怎么用，可以在后面加上一个问号（os.walk？）再按enter。如果想查看更详细的源码实现，则加上两个问号，即（os.walk？？），这个功能经常用到，很是方便，有时候不知道某个参数代表什么意思的时候，就可以查看下帮助文档。</p>
<h3 id="3-把ipython当作终端用"><a href="#3-把ipython当作终端用" class="headerlink" title="3. 把ipython当作终端用"></a>3. 把ipython当作终端用</h3><p>在ipython中可以使用命令行中的许多命令，我常常用来切换目录，编辑或是删除文件。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/python%E5%87%86%E5%A4%87-ipython/02.png?raw=true" alt="images"><figcaption class="figure__caption">images</figcaption></figure></p>
<p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;另外，还可以执行外部unix命令，不过需要在前面加入感叹号！，比如，需要编辑文件的时候，我就经常使用 !vim abc.py来运行vim程序。当然，也可以直接使用edit abc.py来编辑文件，该命令会自动启动vim，但我发现如果使用edit命令的话，编辑完保存文件并退出的时候ipython会自动运行该文件，这个h好处是可以接着在终端调用刚刚打开的文件中的变量和函数，不过这有时候会很烦人，所以我经常使用!vim abc.py来编辑文件。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipython有许多个性化的设置，可以在命令行中输入 ipython profile create，这会在 ~/.config/ipython目录下生成配置文件，查看README有详细说明。</p>
<h3 id="4-书签"><a href="#4-书签" class="headerlink" title="4. 书签"></a>4. 书签</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有些工作目录可能经常使用，每次都cd很麻烦。所以，我们可以在第一次切换到该目录下后，使用bookmark 命令，以后直接一次cd即可，具体使用方法如下。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/python%E5%87%86%E5%A4%87-ipython/03.png?raw=true" alt="images"><figcaption class="figure__caption">images</figcaption></figure></p>
<h3 id="5-记录"><a href="#5-记录" class="headerlink" title="5. 记录"></a>5. 记录</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;有时候我们希望将ipython中运行的命令保存到文件中，这时候可以使    用 logstart，logoff命令实现。</p>
<p><figure class="figure"><img src="https://github.com/hcldirgit/image/blob/master/python%E5%87%86%E5%A4%87-ipython/04.png?raw=true" alt="images"><figcaption class="figure__caption">images</figcaption></figure></p>
<h3 id="6-调试和运行"><a href="#6-调试和运行" class="headerlink" title="6. 调试和运行"></a>6. 调试和运行</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;run abc.py即可运行脚本，如果需要调试的时候，加入-d参数，即 run -d abc.py即可。需要注意的是，运行脚本后，变量即保存在此时的ipython运行环境中了，我们可以对脚本中的变量做进一步的分析和修改。关于调试， 最常使用的就是 s(step), n(next), c(continue),p(print)这4个命令。    </p>
<ul>
<li>l(list)命令用于显示上下文环境。例如：l 20 （显示当前行上下共20行代码） l 1, 30 （显示从1到第30行代码）    </li>
<li>break 用于设置断点。例如： break 10 （在第10行设置断点），break （查看断点信息），</li>
<li>condition 1 pression 给断点1设定条件pression, 这里pression是python表达式，当条件满足时在该点停下来</li>
<li>disable 1,(禁用断点1), enable 1, (恢复断点1), clear 1,(删除断点1), ignore 1 3,(在执行到断点1第四次时才启用该断点),</li>
<li>commands 1,(给断点1设定触发动作，每次运行到该断点时，执行设定的python表达式，比如用于观察某一变量的变化情况。输入end结束commands)<br>更高级的运用可以查看pdb的帮助文档。</li>
</ul>
<h3 id="7-其他"><a href="#7-其他" class="headerlink" title="7. 其他"></a>7. 其他</h3><p>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;其他比较有用的是pylab，在绘图时能够交互，从而使得修改绘图命令时，修改后的结果能够立即在图像上显示出来。<br>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ipython notebook 感觉很鸡肋，平时很少用到。</p>

	

	
		<span class="different-posts"><a href="/2017/10/12/Python/1. Python 基础篇/1. Python 基础语法/1.2 Python 的安装/3. Pyhton 准备- ipython/" onclick="window.history.go(-1); return false;">⬅️ Go back </a></span>

	

</article>

	</main>

	<footer class="footer">
	<div class="footer-content">
		
	      <div class="footer__element">
	<p>Hi there, <br />welcome to my Blog glad you found it. Have a look around, will you?</p>
</div>

	    
	      <div class="footer__element">
	<h5>Check out</h5>
	<ul class="footer-links">
		<li class="footer-links__link"><a href="/archives">Archive</a></li>
		
		  <li class="footer-links__link"><a href="/atom.xml">RSS</a></li>
	    
		<li class="footer-links__link"><a href="/about">about page</a></li>
		<li class="footer-links__link"><a href="/tags">Tags</a></li>
		<li class="footer-links__link"><a href="/categories">Categories</a></li>
	</ul>
</div>

	    

		<div class="footer-credit">
			<span>© 2017 失落的乐章 | Powered by <a href="https://hexo.io/">Hexo</a> | Theme <a href="https://github.com/HoverBaum/meilidu-hexo">MeiliDu</a></span>
		</div>

	</div>


</footer>



</body>

</html>
